Использование программы Gummer
Программа Gummer предназначена для склеивания картинок в единое паттерн-изображение (или CSS-спрайт), назвать можно как угодно...(про экспорт кадров из gif-картинок ниже =)
Зачем это нужно?
Если вы задаетесь таким вопросом, то думаю, что Вам эта прога не нужна =)Но все же раскажжу о нескольких областях применения этой программы:
Во-1-ых это создание текстур для компьютерных игр, к примеру: когда в одном файле хранится несколько игровых пиктограмм;
Во-2-ых это создание CSS-спрайтов для веб-сайта (по сути сам процесс создания идентичен предыдущему пункту);
Ну а кроме того, присутствует возможность обработки изображений мультиблендингом различных элементов поверх оригинальной картинки...
Как использовать?
(ответы на ЧАсто задаваемые ВОпросы внизу)Откройте файл изображения с помощью этой программы (можно просто перетащить его на иконку проги) и все изображения в директории с открытым файлом будут склеены в один файл.
(Рекомендуется чтобы изображения были одинакового размера.)
После открытия файла вы должны будете выбрать способ вставки картинок (по горизонтали или вертикали) и максимальное число картинок по заданной оси (для перехода на следующий столбец или строку).
Программа поддерживает форматы: BMP, JPEG и PNG.
Разберемся на простом примере: (материалы для примера)
Пусть у нас есть папка с несколькими изображениями:
Перетащим одно из них на экзешник программы (по открытому файлу определяется размер элемента, но т.к. в данном случае все картинки одинакового размера, какую именно открывать - неважно).
Перед нами появится мессэджбокс с кнопками "Да"/"Нет", в котором спрашивается "хотим ли мы использовать вертикальное расположение", соответственно если мы хотим использовать горизонтальное расположение - нажимаем "Нет":
Затем появляется сообщение в котором мы должны ввести максимально допустимое количество картинок по выбранной оси. Введем 3:
Вуаля, мы получаем файл "Gummer by Markus_13 4200786.bmp" в котором объединены все картинки из нашей директории:
Добавление фрагментов:
Также вы можете использовать файл "Gummer_paste.ini" в папке с открытым файлом:в этом файле в первой строке должен стоять номер (или координаты в формате "X;Y") фрагмента для вставки,
вторая линия должна содержать имя файла для вставки,
в файле может быть много таких парных строк, таким образом можно вставить несколько изображений за раз;
в таком случае открытый файл должен быть паттерн-изображением.
Опять же, разберемся на примере: (материалы для примера)
Давайте к сформированному ранее изображению с шестью цветными плитками добавим еще 3...
Создадим еще 2 картинки в той же папке:
И еще одно изображение у нас, к примеру, есть в другой папке:
Отлично, далее создаем файл "Gummer_paste.ini":
Открываем его в блокноте и записываем в него следующий текст:
Ини-файл готов, теперь откроем ранее созданный файл "Gummer by Markus_13 4200786.bmp" с помощью Gummer`а.
Настройки указываем те же, что и в прошлый раз:
"Вертикальное расположение?"->"Нет",
"Картинок по горизонтали:"->"3"...
Если вы все сделали правильно, то на выходе получите вот такое изображение (оно будет сохранено в тот же файл):
Вставка PNG-файлов с переменной прозрачностью:
При вставке PNG-изображений вы можете указывать способ переноса альфа-канала:в таком случае формат первой строки будет "X;Y;Z" где Z это число от 1 до 3:
1 - режим полного переноса (прозрачность фрагмента вставки будет перенесена в паттерн-файл),
2 - режим наложения (фрагмент-вставка будет наложен поверх оригинального изображения), он включен по-умолчанию,
3 - режим вычитания (прозрачность фрагмента будет вычтена из оригинального альфа канала).
Как обычно, привожу пример: (материалы для примера)
За основу возьмем картинку с девятью плитками из прошлого примера, только сохраним ее как 32-битный PNG-файл (в Photoshop`е или Paint`е - неважно)...
Также нарисуем PNG-картинку с переменной прозрачностью, например такую (можно взять из материалов к этому примеру):
В "Gummer_paste.ini" запишем следующее:
Ини-файл готов, открываем ранее созданный PNG-файл "Gummer by Markus_13 4200786.png" с помощью Gummer`а.
Настройки указываем те же, что и в прошлый раз: "Вертикальное расположение?"->"Нет", "Картинок по горизонтали:"->"3"...
Если вы все сделали правильно, то на выходе получаем:
Склеивание изображений разных размеров:
Вообще рекомендуется чтобы изображения были одинакового размера, но если очень хочется - то все возможно! =)По сути этот процесс идентичен склеиванию одноформатных картинок,
к примеру: (материалы для примера) (Горизонтальное расположение по 2 картинки)
Но есть один нюанс... А именно: промежутки появляющиеся из-за несоответствия размеров входных изображений...
В PNG-файлах промежутки естественно будут прозрачны, в BMP/JPG файлах они будут белого цвета (по-умолчанию).
Но, внимание: хорошая новость, их цвет можно изменить... Для этого создаем в директории с картинками файл "Gummer.ini" и записываем в него первой строкой необходимый нам фоновый цвет.
Цвет представляется трехбитным HEX-кодом. Вы можете генерировать такой код с помощью программы CLRer.
К примеру если мы запишем в "Gummer.ini" ноль, то получим черный фон: А если в "Gummer.ini" записать следующий текст:
Экспорт кадров из gif-картинок:
Так же прост как система ценностей амебы: открываем gif-файл с помощью программы и получаем папку с кадрами этой gif-картинки в png-формате (название папки будет именем gif-файла). Также в этой же папке будет создан файл "delays.txt", в котором будут построчно перечислены меж-кадровые задержки (время отображения каждого кадра) в сотых долях секунды.Так же есть возможность использовать по-пиксельную фильтрацию для gif'ок с прозрачностью: для включения фильтра создаем в папке с gif-картинкой файл "gif_filter.txt"...
В этот файл нам необходимо записать код фильтра (2-3х значное число), в котором первая цифра (или первые две) представляют из себя мощность и режим фильтра, а последняя цифра является модификатором результирующей прозрачности...
От 00 до 99 - фильтр убирающий светлые пикселы по краям картинки, 100-199 то же самое но для темных пикселов.
Под действие фильтра попадают все пикселы, у которых как минимум 2 соседних пиксела прозрачны, далее идет определение гаммы (яркости):
Цвет пиксела раскладывается на RGB составляющую и побайтно вычисляется разница между цветом пиксела и белым (00-99) или черным (100-199) цветом.
Если разница получается меньше мощности фильтра - пиксел становится прозрачным... Мощность фильтра равняется X*30, где X - первая цифра кода (или вторая для черного цвета).
Результирующая прозрачность пиксела вычисляется следующим образом:
Если у пиксела прозрачных соседей всего 2 - его прозрачность станет 78% (т.е. он будет виден на 22%), если прозрачных соседей больше двух пиксел станет полностью прозрачным. Но после первого расчет вступает в действие код фильтра: прозрачность уменьшается на X%, где X=(последняя цифра*3,9).
Рассмотрим на примере:
Если бы окантовка была темной - было бы нужно подставить единицу слева от кода фильтра, т.е. 160 или 169...
Если попытаться использовать фильтр 19 (или 10) - мы увидим, что окантовка останется неизменной, так как не попадет под действие фильтра из-за того что разница гаммы с белым цветом будет выше мощности фильтра:
Цвет окантовки #FFFFC8, если побайтно то: красная составляющая = 255, зеленая = 255, синяя = 200. Считаем разницу с белым цветом (#FFFFFF): для красной составляющей 255-255=0, для зеленой 255-255=0, для синей 255-200=55; затем суммируем: 0+0+55=55. Считаем мощность фильтра: 1*30=30, в итоге получем что 55>30 - соответственно этот цвет не попадает под действие фильтра с такой мощностью!
Если вы чего-то не поняли, не расстраивайтесь - функция фильтрации граничных пикселов вам врядли пригодится
Запуск программы из bat-файла:
Формат запуска: Gummer.exe "входной_файл" Tx {"выходной_файл"} {"ини_файл_вставок"}Пример:
ЧАсто задаваемые ВОпросы:
Почему у меня ошибка?Почему у меня неработает???
Вариант 1: Возможно Вы неправильно используете программу! (прочитайте эту статью - возможно поможет =)
Вариант 2: Возможно Вы используете устаревшую версию, проверьте наличие новой версии здесь или там!
Вариант 3: Возможно в программе ошибка, если Вы уверены что Вы все делаете правильно - пришлите мне на мыло полный текст ошибки и краткое описание своих действий перед ошибкой (с программой Gummer разумеется, рассказывать мне что Вы съели на обед необязательно =)
------------------------------------------------------------------------------
Как определить порядок склеиваемых изображений?Как поменять местами два изображения при склеивании?
Т.к. порядок изображений определяется лексикографическим методом по имени файла, чтобы поменять его: переименуйте нужное изображение.
Для наглядности - упорядочивайте файлы в Проводнике по имени.
------------------------------------------------------------------------------
Почему мои картинки склеиваются в неправильный формат файла?Формат выходного изображения (при склеивании изображений различных форматов) зависит от формата открытого файла. Поэтому, если нужен PNG: открывайте PNG-файл прогой, если нужен JPG: открывайте JPG-файл, и т.д.
------------------------------------------------------------------------------
Почему программа Gummer без интерфейса?Потому что такова задумка автора =) Лично у меня вынесен ярлык проги в меню "Отправить", и мне так удобней =)
------------------------------------------------------------------------------
Как добавить ярлык программы в меню "Отправить"?Выделяете нужную программу и нажимаете "Ctrl"+"C", затем открываете эту папку: "%UserProfile%\SendTo".
В этой папке вставляете ярлык. (Клик по пустому месту правой кнопкой и в появившемся контекстном меню жмем "Вставить ярлык" =)
------------------------------------------------------------------------------
Откуда я взял картинки для примеров?Все кроме летучей мыши Я нарисовал сам. Все эти картинки применялись в моих проектах...
------------------------------------------------------------------------------
Успехов при работе с программой Gummer, отчеты о багах и пожелания можете присылать мне на мыло (мой_ник@ymail.com), а можете и не присылать :)